package com.yuanfeng.goods.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yuanfeng.commoms.dto.base.DealerGoodsUserInfoDTO;
import com.yuanfeng.commoms.dto.goods.*;
import com.yuanfeng.commoms.dto.order.WapGoodsSaleSumDTO;
import com.yuanfeng.commoms.dto.shop.ShopIndexDTO;
import com.yuanfeng.commoms.util.ResponseResult;
import com.yuanfeng.commoms.vo.activity.ManjianzengzhePromotionContentQueryResultVO;
import com.yuanfeng.commoms.vo.goods.GdsBaseDetailResultVO;
import com.yuanfeng.commoms.vo.goods.GoodsBatchCommonVO;
import com.yuanfeng.commoms.vo.user.UserInfoVO;
import com.yuanfeng.goods.dto.*;
import com.yuanfeng.goods.entity.GoodsCommonEntity;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @ClassName GoodsCommonService
 * @Description 商品表
 * @Author cyp
 * @Date 2023-05-25 09:16:34
 * @Version 1.0
 **/
public interface GoodsCommonService extends IService<GoodsCommonEntity> {
    /**
     * 根据商品id查询详情
     *
     * @param param
     * @return
     */
    ResponseResult queryGoodsDetail(GoodsDetailsDTO param);

    /**
     * 详情页的猜你喜欢
     *
     * @param param
     * @return
     */
    ResponseResult queryGuessLikeQuery(WepGuessLikeGoodsParamDTO param);

    /**
     * 根据commonid查询详情介绍
     *
     * @param commonsId
     * @return
     */
    ResponseResult queryGdsDetailDesc(Integer commonsId);

    /**
     * 推荐商品
     *
     * @param param
     * @return
     */
    ResponseResult queryRecommendGoods(WebIndexRecommendQueryParamDTO param);

    /**
     * 查询商品状态及库存
     *
     * @param commonId
     * @return
     */
    List<GdsBaseDetailResultVO> queryGoodsStartStock(Integer commonId);

    /**
     * 修改商品库存
     *
     * @param wapGood
     * @return
     */
    ResponseResult updateGoodsStock(List<WapGoodsSaleSumDTO> wapGood);

    /**
     * 修改商品销量
     *
     * @param wapGood
     * @return
     */
    ResponseResult updateGoodsSalenum(List<WapGoodsSaleSumDTO> wapGood);

    /**
     * 查询当前商品商品的 售卖区域规则
     *
     * @param goodsIds
     * @return
     */
    List<Integer> selectTransportAreaId(List<Integer> goodsIds);

    /**
     * 更新商品收藏量
     *
     * @param paraMap
     * @return
     */
    ResponseResult updateGoodsCollect(Map<String, String> paraMap);

    /**
     * 根据goods_id查询积分商品的价格和所需的积分
     *
     * @param param
     * @return
     */
    ResponseResult queryIntegralGoodsBygoodsId(Map<String, Object> param);

    /**
     * 判断当前商品是否是是 plus 商品
     *
     * @param commonId
     * @return
     */
    Integer queryGoodsIsPlus(Integer commonId);

    /**
     * 根据商家的商品id 查询供应商的商品价格
     *
     * @param param
     * @return
     */
    ResponseResult querySupplierGoodsPrice(Map<String, Object> param);

    /**
     * 判断当前商品是否是 虚拟商品
     *
     * @param param
     * @return
     */
    ResponseResult queryVirtualgoods(Map<String, String> param);

    /**
     * 更新商品销量和库存
     *
     * @param saleSum
     * @return
     */
    ResponseResult updateSaleAndStock(String saleSum);

    /**
     * 根据商品规格查询商品
     *
     * @param param
     * @return
     */
    ResponseResult queryGoodsSpec(GoodsDetailsDTO param);

    /**
     * 包装清单
     *
     * @param commonId
     * @return
     */
    ResponseResult queryPackingList(Integer commonId);

    /**
     * 售后服务
     *
     * @param commonId
     * @return
     */
    ResponseResult queryCommonService(Integer commonId);

    /**
     * 积分商品列表 pc
     *
     * @param param
     * @return
     */
    ResponseResult queryIntegralGoodsListFilter(ListPageQueryParamDTO param);

    /**
     * 查询规格值数据
     *
     * @param goodsId
     * @return
     */
    ResponseResult goodsOrderParam(String goodsId);

    /**
     * 查询店铺首页
     *
     * @param param
     * @return
     */
    ResponseResult queryShopIndex(ShopIndexDTO param);

    /**
     * 根据commonid获取商品详情
     *
     * @param commonId
     * @return
     */
    ResponseResult getDetailByCommonId(Integer commonId);


    /**
     * 根据商品id修改收藏数
     *
     * @param commonId
     * @return
     */
    ResponseResult updateCommonCollect(String commonId);

    /**
     * 取消下单时，增加库存
     *
     * @param param
     * @return
     */
    ResponseResult updateStockReduce(WapGoodsSaleSumDTO param);

    /**
     * 更新商品评论数
     *
     * @param map
     * @return
     */
    ResponseResult updateCommentCount(Map<String, Object> map);

    /**
     * 查询商品数据
     *
     * @param param
     * @return
     */
    ResponseResult queryByGoodsSalesum(UserTokenBeanDTO param);

    /**
     * 查询出售中的商品 goodsName不传，查询店铺所有
     *
     * @param param
     * @return
     */
    ResponseResult queryByGoodsName(ManageGdsNameQueryDTO param);

    /**
     * 根据commonId删除商品
     *
     * @param param
     * @return
     */
    ResponseResult deleteByCommonId(ManageCommonIdsDTO param);

    /**
     * 根据commonId查询商品锁状态
     *
     * @param param
     * @return
     */
    ResponseResult queryGoodsLockedStatus(GoodsDetailsDTO param);

    /**
     * plus 商品推荐
     *
     * @return
     */
    ResponseResult selectplusgoods();

    /**
     * 查看放入仓库的商品
     *
     * @param param
     * @return
     */
    ResponseResult queryStoreHouse(ManageGdsNameQueryDTO param) throws IllegalAccessException;

    /**
     * 查询等待审核的商品
     *
     * @param param
     * @return
     */
    ResponseResult queryVerifyGoods(ManageGdsNameQueryDTO param) throws IllegalAccessException;

    /**
     * 查询审核失败的商品
     *
     * @param param
     * @return
     */
    ResponseResult queryVerifyFailGoods(ManageGdsNameQueryDTO param) throws IllegalAccessException;

    /**
     * 违规的商品
     *
     * @param param
     * @return
     */
    ResponseResult queryViolationsGoods(ManageGdsNameQueryDTO param) throws IllegalAccessException;

    /**
     * 查询运费模板下所有商品
     *
     * @param param
     * @return
     */
    ResponseResult queryGoodsByTemplateId(TransportTemplateDetailDeleteDTO param) throws IllegalAccessException;

    /**
     * 查询售卖区域id下所有商品
     *
     * @param param
     * @return
     */
    ResponseResult queryGoodsByTransportAreaId(TransportTemplateDetailDeleteDTO param) throws IllegalAccessException;

    /**
     * 修改商品是否加入促销
     *
     * @param commonIdList
     */
    void updateCommonIsXian2(List<Integer> commonIdList);

    /**
     * 修改商品是否加入促销
     *
     * @param param
     */
    void updateCommonIsXian(Map<String, Object> param);

    /**
     * 查询非活动商品
     *
     * @param param
     * @return
     */
    ResponseResult queryGoodsList(GoodsListQueryDTO param);

    /**
     * 查询出售中的商品 goodsName不传，查询店铺所有   activityGoods
     *
     * @param param
     * @return
     */
    ResponseResult queryactivityGoods(ManageGdsNameQueryDTO param) throws IllegalAccessException;

    /**
     * 查询装修空间 所有商品
     **/
    ResponseResult queryManageSpaceAllGoods(PlatFormAllGoodsQueryDTO param);

    /**
     * 查询商品数量
     *
     * @param map
     * @return
     */
    ResponseResult goodsCount(Map<String, Object> map);

    /**
     * 查询今日商品数量
     *
     * @param map
     * @return
     */
    ResponseResult goodsTodayNumber(Map<String, Object> map);

    /**
     * 商品按月分组统计
     */
    ResponseResult queryByMonth(Map<String, Object> map);

    /**
     * 查询所有商品
     *
     * @param param
     * @return
     */
    ResponseResult queryAllGoods(PlatFormAllGoodsDTO param) throws IllegalAccessException;

    /**
     * 商品一键上架 同步商品
     *
     * @param goodsUserInfo
     * @return
     */
    ResponseResult putAway(DealerGoodsUserInfoDTO goodsUserInfo);

    /**
     * 供应商商品立即购买
     * @param map
     * @return
     */
    ResponseResult dealer(Map<String,String> map);

    /**
     * 查询经销商品
     *
     * @param param
     * @return
     */
    ResponseResult queryDealerGoods(ManageGdsNameQueryDTO param) throws IllegalAccessException;

    /**
     * 批量更新或新增商品角标
     *
     * @return
     */
    ResponseResult batchUpdateCorner(Map<String, Object> map);

    /**
     * 删除商品角标
     *
     * @return
     */
    ResponseResult deleteCornerMarker(Map<String, Object> map);

    /**
     * 积分商品编辑
     *
     * @param param
     * @return
     */
    ResponseResult updateIntegralGoods(IntegralCommonDTO param);

    /**
     * 查询商品详情
     *
     * @param map
     * @return
     */
    ResponseResult goodsQueryDetail(Map<String, Object> map);

    /**
     * 积分商品添加
     *
     * @param param
     * @return
     */
    ResponseResult addIntegralGoods(ManageGdsCommonPublishDTO param);

    /**
     * 优惠券商品列表
     *
     * @param param
     * @return
     */
    ResponseResult queryCouponList(UserVcBaseQueryDTO param);

    /**
     * 红包商品列表
     *
     * @param param
     * @return
     */
    ResponseResult queryRedPacketList(UserAvailableRedpacketQueryDTO param);

    /**
     * 查询商品、店铺、蜂巢审核数
     *
     * @param
     * @return
     */
    ResponseResult queryVerifyNum(Map<String, Object> map);

    /**
     * 更新spu商品
     *
     * @param map
     * @return
     */
    ResponseResult updateGoodsCommonByMap(Map<String, Object> map);

    /**
     * 根据店铺id查找所有commonId
     *
     * @param shopId
     * @return
     */
    List<Integer> queryCommonIdByShopId(Integer shopId);

    /**
     * 更新spu商品状态
     *
     * @param commonParam
     * @return
     */
    ResponseResult updateCommonState(CommonShopStateDTO commonParam);

    /**
     * 查询所有的积分商品
     *
     * @param param
     * @return
     */
    ResponseResult queryIntegralAll(ListPageQueryParamDTO param);

    /**
     * 平台商品批量 锁定
     *
     * @param param
     * @return
     */
    ResponseResult platformLockUpdate(PlatFormGoodsStateDTO param);

    /**
     * 平台商品批量 屏蔽
     *
     * @param param
     * @return
     */
    ResponseResult platformScreenUpdate(PlatFormGoodsStateDTO param);

    /**
     * 平台商品批量上、下架  审核
     *
     * @param param
     * @return
     */
    ResponseResult platformViolationsUpdate(PlatFormGoodsStateDTO param);

    /**
     * 平台查询商品详情
     *
     * @param param
     * @return
     */
    ResponseResult platformQueryDetail(ManageGdsNameQueryParamDTO param);

    /**
     * 获取门店列表库存信息
     *
     * @param param
     * @return
     */
    ResponseResult queryGateCommonsList(GateQueryCommonsDTO param);

    /**
     * 获取商品下规格的详情
     *
     * @param param
     * @return
     */
    ResponseResult queryGoodsSpecList(ManageCommonIdsDTO param);

    /**
     * 门店设置库存
     *
     * @param param
     * @return
     */
    ResponseResult updateGateShopStock(GateUpShopGoodsStockDTO param);

    /**
     * 商品分类批量审核
     * @param dto
     * @return
     */
   ResponseResult checkBatchVerify(DealerGoodsUserInfoDTO dto);

    /**
     * 商家经销审核
     * @param dto
     * @return
     */
   ResponseResult checkDealer(DealerGoodsUserInfoDTO dto);

    /**
     * 查询商家是否是指定供应商的经销商
     * @param dto
     * @return
     */
    ResponseResult queryGoodsUser(DealerGoodsUserInfoDTO dto);

    /**
     * 商家中心-商品信息查询
     * @param dto
     * @return
     */
    ResponseResult queryGoodsDetailByBusiness(ManageCommonIdsDTO dto);

    /**
     * 供应商商品列表页
     * @param dto
     * @return
     */
    ResponseResult queryGoodsListByBusiness(WebGoodsListQueryDTO dto) throws IllegalAccessException;

    /**
     * 获取店铺所有商品
     * @param param
     * @return
     */
    ResponseResult livequeryByGoodsName(ManageGdsNameQueryDTO param);

    /**
     * 判断商品是否可以添加
     * @param param
     * @return
     */
    ResponseResult seckillCheckGoods(ManageSeckillBaseUpdateDTO param);

    /**
     * 检验商品名称是否重复
     * @param param
     * @return
     */
    ResponseResult checkGoodsName(CheckNameQueryParamDTO param);

    /**
     * 添加plus商品
     * @param map
     * @return
     */
    ResponseResult updatePlusGoods(Map<String, Object> map);



    /**
     * 查询商品信息
     * @param map
     * @return
     */
    ResponseResult selecPlustGoodsByPage(Map<String, Object> map);


    /**
     * 删除plus商品
     * @param map
     * @return
     */
    ResponseResult deletePlusGoods(Map<String, Object> map);


    /**
     * 查询赠品
     *
     * @param param
     * @return
     */
    ResponseResult queryGiveawayList(ManjianzengzheListQueryDTO param) throws IllegalAccessException;


    /**
     * 判断商品是否可以添加
     * @param param
     * @return
     */
    ResponseResult discountCheckGoods(DiscountBaseAddParamDTO param);



    /**
     * 查询商品列表 暂不用
     *
     * @param param
     * @return
     */
    ResponseResult queryGoodsListByPintuan(Map<String, Object> param);


    /**
     * 查询商家同步供应商的商品 但未修改过价格的
     */
    ResponseResult queryIsPriceUpdate(ManageGdsNameQueryDTO param) throws IllegalAccessException;

    /**
     * 待发布的商品
     *
     * @param param
     * @return
     */
   ResponseResult queryWaitRelease(ManageGdsNameQueryDTO param) throws IllegalAccessException;

    /**
     * 商品上架
     *
     * @param param
     * @return
     */
    ResponseResult setGoodsOnline(ManageCommonIdsDTO param);


    /**
     * 校验店铺规格下是否有商品
     *
     * @param param
     * @return
     */
    ResponseResult checkGoodsBySpecId(Map<String, Object> param);


    /**
     * 删除店铺规格
     *
     * @param param
     * @return
     */
   ResponseResult deleteBySpecId(Map<String, Object> param);


    /**
     * 商品下架
     *
     * @param param
     * @return
     */
   ResponseResult setGoodsOffline(ManageCommonIdsDTO param);
    /**
     * 商品搜索列表
     * @param param
     * @return
     */
    ResponseResult shopListQueryByShopFilter(ListPageQueryParamDTO param);

    /**
     * 活动
     * @param goodsId
     * @param goodsMaxSale
     * @param commonId
     * @param commonIsXian
     * @param userId
     * @param sessionTime
     * @return
     */
    ActivityGoodsDetailDTO dealActivity2(Integer goodsId, Integer goodsStock, Integer goodsMaxSale, Integer commonId, Integer commonIsXian, String userId, Date sessionTime);

    /**
     * 生成活动内容
     * @param r
     */
    void dealPromotionContent(ManjianzengzhePromotionContentQueryResultVO r);

    /**
     * 添加足迹
     * @param userinfo
     * @param commonId
     * @param catId
     */
    void addUserFoot(UserInfoVO userinfo, Integer commonId, Integer catId);

    /**
     * 查询商品信息
     * @param param
     * @return
     */
    ResponseResult queryGoods(Map<String,Object> param);

    /**
     * 全部宝贝下面分类
     * @param param
     * @return
     */
    ResponseResult queryByFilter(ShopIndexQueryParamDTO param) throws IllegalAccessException;

    /**
     * 店铺列表
     * @param param
     * @return
     */
    ResponseResult queryShopIndexquery(ShopIndexQueryParamDTO param) throws IllegalAccessException;


    /**
     * 商家端-图片导入传入zip包
     * @param sourceZipFileBytes
     * @return
     */
    ResponseResult zipLocalDiskImage(byte[] sourceZipFileBytes, List<String> commonList) throws IOException;


    /**
     * 淘宝导入
     * @param file
     * @param token
     * @param transportAreaId
     * @param transportTemplate
     * @return
     * @throws Exception
     */
    ResponseResult insertGoodsBatch(MultipartFile file, String token, Integer transportAreaId, Integer transportTemplate) throws Exception;


    /**
     * 导入
     * @param dataParam
     * @param param
     * @return
     */
    Map<String, Object> importExcelData(Map<String, Object> dataParam, GoodsBatchCommonVO param);


    /**
     * 批量上架同步供应商商品
     */
    ResponseResult updateSupperGoodsStart(Map<String,Object> param);

    /**
     * 满赠减少赠品库存增加商品销量
     *
     * @param commonIdList
     * @return
     */
    void updateGiveawayStock(List<Integer> commonIdList);

    /**
     * 查询待发布的商品
     *
     * @param param
     * @return
     */
    ResponseResult queryToBeReleased(ManageGdsNameQueryParamDTO param);

    /**
     * 定时发布商品--立即发布
     *
     * @param param
     * @return
     */
    ResponseResult fixedTimeGoodsPublishNow(ManageCommonIdsDTO param);

    /**
     * 放入仓库商品--立即审核
     *
     * @param param
     * @return
     */
    ResponseResult putIntoWarehouseGoodsReviewingNow(ManageCommonIdsDTO param);
}

